package ar.com.jendrix.login.service.impl;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import ar.com.jendrix.common.exception.SystemException;
import ar.com.jendrix.common.exception.ValidationException;
import ar.com.jendrix.common.persistence.entity.service.BaseEntityService;
import ar.com.jendrix.common.persistence.manager.BaseEntityDAO;
import ar.com.jendrix.login.dao.CuentaDAOImpl;
import ar.com.jendrix.login.dto.CuentaDTO;
import ar.com.jendrix.login.entity.Cuenta;
import ar.com.jendrix.login.query.CuentaQuery;
import ar.com.jendrix.login.service.CuentaService;

@Stateless
public class CuentaServiceImpl extends BaseEntityService<CuentaDTO, Cuenta> implements CuentaService {

	@EJB
	private CuentaDAOImpl cuentaDao;

	@Override
	protected BaseEntityDAO<Cuenta> getEntityDAO() {
		return cuentaDao;
	}

	@Override
	public Cuenta mapToEntity(CuentaDTO dto) {
		Cuenta cuenta = new Cuenta();
		cuenta.setId(dto.getId());
		cuenta.setNombre(dto.getNombre());
		// cuenta.setPassword(dto.getPassword());
		cuenta.setAlias(dto.getAlias());
		cuenta.setFechaAlta(dto.getFechaAlta());
		return cuenta;
	}

	@Override
	public CuentaDTO mapToDTO(Cuenta entity) {
		CuentaDTO dto = new CuentaDTO();
		Cuenta usuario = (Cuenta) entity;
		dto.setId(usuario.getId());
		dto.setNombre(usuario.getNombre());
		// dto.setPassword(entity.getPassword());
		dto.setFechaAlta(usuario.getFechaAlta());
		return dto;
	}

	@Override
	protected void validEntityData(CuentaDTO dto) throws ValidationException {
		// TODO Auto-generated method stub
	}

	@Override
	public List<CuentaDTO> search(CuentaQuery cuentaQuery) throws SystemException {
		List<CuentaDTO> dtoList = null;
		try {
			List<Cuenta> entityList = cuentaDao.search(cuentaQuery);
			dtoList = mapToDTO(entityList);
		} catch (Throwable t) {
			throw new SystemException(t);
		}
		return dtoList;		
	}
}